package com.banuit.questions.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * 经典Hello World
 * @author banana
 * @date 2019/7/17 16:16
 */
@RestController
@RequestMapping(value = "/hello")
public class HelloController {

    /*
    (1)出于资源利用的考虑，用static修饰的变量归这个类使用，不论这个类实例化多少个，大家用的都是同一个static变量
    而日志记录的是当前类的日志，不是每个实例的日志，所以一个类只要一个Logger就可以了
    (2)用final修饰不做修改的变量，表示一种编程习惯，表示该类的Logger只是记录该类的信息，否则日志会无法提供可以令人信服的记录
    */
    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);

    @RequestMapping(value = "/say",method = RequestMethod.GET)
    public String say() {
        logger.info("[say方法start][大家跟我说Hello World][入参无]");
        long methodStartTime = System.currentTimeMillis();

        String everybodySay = "Hello World!";
        try {
            Thread.sleep(1000);             //睡眠1s,为了更直观的查看方法耗时
        } catch (InterruptedException e) {
            logger.info("发现Exception",e);
        }

        long methodEndTime = System.currentTimeMillis();
        logger.info("[say方法end][大家跟我说Hello World][出参:everybodySay={}][方法耗时:{}秒]",everybodySay,(methodEndTime-methodStartTime)/1000F);
        return everybodySay;
    }
}
